package com.cw.DesignModel23.Behavioral.VisitorPattern.Visitor2;


import java.util.ArrayList;
import java.util.Iterator;

//【接受访问的具体类：Directory（ConcreteElement角色、ObjectStructure角色）】
public class Directory extends EntryElement {
    /**
     * 文件夹名字
     */
    private String name;
    /**
     * 目录条目集合
     */
    private ArrayList dir = new ArrayList();

    /**
     * 构造函数
     * @param name
     */
    public Directory(String name) {
        this.name = name;
    }

    /**
     * 获取名字
     * @return
     */
    public String getName() {
        return name;
    }

    /**
     * 获取大小
     * @return
     */
    public int getSize() {
        int size = 0;
        Iterator it = dir.iterator();
        while (it.hasNext()) {
            EntryElement entry = (EntryElement) it.next();
            size += entry.getSize();
        }
        return size;
    }

    /**
     * 增加目录条目
     * @param entry
     * @return
     */
    public EntryElement add(EntryElement entry) {
        dir.add(entry);
        return this;
    }

    /**
     * 生成Iterator
     * @return
     */
    public Iterator iterator() {
        return dir.iterator();
    }

    /**
     * 接受访问者的访问
     * @param v
     */
    public void accept(Visitor v) {
        v.visit(this);
    }
}

